package cn.xenosp.server.common.tools;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;

/**
 * 项目名： service-web
 * 包路径： cn.xenosp.server.common.tools
 * 作者：   TongHui
 * 创建时间: 2024-08-26 14:51
 * 描述: TODO
 * 版本: 1.0
 */
@Slf4j
public class SecurityUtils implements Serializable {

    private static final ThreadLocal<JSONObject> loginEntityThreadLocal=new ThreadLocal<>();

    /**
     * 获取当前线程绑定的用户登录对象
     *
     * @return
     */
    public static <T> T getLoginInfo(T clazz) {
        JSONObject jsonObject = loginEntityThreadLocal.get();
        return (T) JSONUtil.toBean(jsonObject.toString(),clazz.getClass());
    }

    /**
     * 将用户登录对象绑定到当前线程
     *
     * @param loginInfo
     */
    public static void setLoginInfo(Object loginInfo) {
        loginEntityThreadLocal.set(JSONUtil.toBean(JSONUtil.toJsonStr(loginInfo),JSONObject.class));
    }

    /**
     * 将用户登录对象从当前线程销毁
     */
    public static void removeLoginInfo() {
        loginEntityThreadLocal.remove();
    }
}
